package com.mmy.dao.sys;

import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.sys.TSysOrg;

/**
 * 公司表管理
 *
 * @param 参数说明
 * @return 返回值说明
 * @throws 异常处理说明
 * @author 创建人 hanxl 整理
 * @date 创建日期 2020.10.29
 */
public interface TSysOrgRepository extends JpaRepository<TSysOrg, Integer> {
	/**
	 * 查询所有公司信息
	 * 
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 *       用处：1、注册时搜索所有公司名称 SysUserController中 index函数
	 */
	/**
	 * 查询该OrgID的信息
	 * 
	 * 
	 * 
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "select * from tSysOrg where iOrgID=?1", nativeQuery = true)
	TSysOrg findByOrgID(int iOrgID);

	/**
	 * 获取最大编号
	 * 
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 * 
	 */
	@Query(value = "select MAX(iOrgID)  from tSysOrg where LEFT(iOrgID,2) = RIGHT(YEAR(NOW()),2)", nativeQuery = true)
	Object getMaxOrgID();

	/**
	 * 创建公司信息
	 * 
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 * 
	 */
	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tSysOrg(iOrgID, iUpOrgID, cOrgName, cContact, cMobile, cTel, cFax, cAddress, iZoneID, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5) VALUES (?1, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)", nativeQuery = true)
	void save(int OrgID);

	/* 通过ID查询 */
	/*
	 * @Query(value = "select * from tSysOrg where iOrgID=?1", nativeQuery = true)
	 * TSysOrg findByiOrgID(int iOrgID);
	 */

	/**
	 * 删除公司
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 * 
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tSysOrg where iOrgID in (:iOrgIDs)", nativeQuery = true)
	void deleteChecked(@Param("iOrgIDs") List<Integer> iOrgIDs);

	/**
	 * 查询该OrgID的信息以及上级所属公司为该ID的公司信息
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 * 
	 */
	@Query(value = "select * from tSysOrg where iOrgID=?1 or iUpOrgID=?1", nativeQuery = true)
	List<TSysOrg> findBySysOrgID(int orgID);

	/**
	 * 查询上级所属公司为该ID的公司信息 删除公司时用到
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 * 
	 */
	@Query(value = "select * from tSysOrg where iUpOrgID=?1", nativeQuery = true)
	List<TSysOrg> getByUpOrgID(int iOrgID);

}
